package com.coocaa.aries.core.tool.file;

import net.lingala.zip4j.core.ZipFile;
import net.lingala.zip4j.model.ZipParameters;
import net.lingala.zip4j.util.Zip4jConstants;

import java.io.File;

/**
 * @author : bijiahao
 * @date : 2019/6/5.
 * @description:<p> zip 文件操作工具类
 * </p>
 */
public class ZipFileUtil {
    /**
     * 将指定目录下的内容压缩到指定的zip文件
     *
     * @param dir
     * @param zipPath
     * @throws Exception
     */
    public static void zipFile(String dir, String zipPath) throws Exception {
        // 生成的压缩文件
        ZipFile zipFile = new ZipFile(zipPath);
        ZipParameters parameters = new ZipParameters();
        // 压缩方式
        parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
        // 压缩级别
        parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
        // 要打包的文件夹
        File currentFile = new File(dir);
        File[] fs = currentFile.listFiles();
        // 遍历文件夹下所有的文件、文件夹
        for (File f : fs) {
            if (f.isDirectory()) {
                zipFile.addFolder(f.getPath(), parameters);
            } else {
                zipFile.addFile(f, parameters);
            }
        }
    }
}
